
// Object.entries()   Object.fromEntries()


const obj = {
  a: 1,
  b: 2
};

Object.prototype.c = 3;
// console.log(obj);

const testArr = Object.entries(obj);
console.log(testArr);

const newObj = Object.fromEntries(testArr);
console.log(newObj); // 会返回一个新对象
// console.log(newObj === obj); // false 不是同一个引用

// const m = new Map(testArr);
// console.log(m);
// const mObj = Object.fromEntries(m);
// console.log(mObj);

// for (let [ k, v ] of m) {
//   console.log(k ,v);
// }

// const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
// const obj2 = Object.fromEntries(arr);
// console.log(obj2); // { 0: "a", 1: "b", 2: "c" }

/**
 * Object.fromEntries()
 * 
 * 参数：接收一个类似 Array 、 Map 或者其它实现了可迭代协议的可迭代对象
 * 
 * 把键值对列表转换为一个对象。
 * 
 */

// 简单实现 Object.fromEntries()

Object.myFromEntries = function (obj) {
  var _obj = {};

  for (var item of obj) {
    // console.log(item);
    _obj[item[0]] = item[1];
  }

  // for (var [ k, v ] of obj) {
  //   // console.log(k, v);
  //   _obj[k] = v;
  // }

  return _obj;
}

const newObj2 = Object.myFromEntries(testArr);
console.log(newObj2); // 会返回一个新对象